package navalgo3.Modelo;

import java.util.ArrayList;

public class CreadoraDeNaves {

	public ArrayList<Posicion> crearNaveSegunRumboPosicionYDireccion(
			Rumbo rumbo, int direccion, Posicion posicionDeInicio) {
		if (direccion ==1){
			if ( (rumbo.getClass()== new Noroeste().getClass()) || (rumbo.getClass()== new Sudoeste().getClass()) ||
					(rumbo.getClass()== new Oeste().getClass()) ){
				return this.crearHaciaIzquierda (posicionDeInicio);}
			else{
				return this.crearHaciaDerecha (posicionDeInicio);}	
		}
		
		else{
			
			if ( (rumbo.getClass()== new Sur().getClass()) || (rumbo.getClass()== new Sudoeste().getClass()) ||
					(rumbo.getClass()== new Sudeste().getClass())  ){
				return this.crearHaciaAbajo (posicionDeInicio);}
			else {
				return this.crearHaciaArriba (posicionDeInicio);
			}
		}
	}

	private ArrayList<Posicion> crearHaciaArriba(Posicion posicionDeInicio) {
		ArrayList <Posicion> listaDePosiciones = new ArrayList <Posicion>();
		listaDePosiciones.add(posicionDeInicio);
		listaDePosiciones.add(posicionDeInicio.posicionNorte());
		listaDePosiciones.add(posicionDeInicio.posicionNorte().posicionNorte());
		listaDePosiciones.add(posicionDeInicio.posicionNorte().posicionNorte().posicionNorte());
		listaDePosiciones.add(posicionDeInicio.posicionNorte().posicionNorte().posicionNorte().posicionNorte());
		return listaDePosiciones;
	}

	private ArrayList<Posicion> crearHaciaAbajo(Posicion posicionDeInicio) {
		ArrayList <Posicion> listaDePosiciones = new ArrayList <Posicion>();
		listaDePosiciones.add(posicionDeInicio);
		listaDePosiciones.add(posicionDeInicio.posicionSur());
		listaDePosiciones.add(posicionDeInicio.posicionSur().posicionSur());
		listaDePosiciones.add(posicionDeInicio.posicionSur().posicionSur().posicionSur());
		listaDePosiciones.add(posicionDeInicio.posicionSur().posicionSur().posicionSur().posicionSur());
		return listaDePosiciones;
	}

	private ArrayList<Posicion> crearHaciaDerecha(Posicion posicionDeInicio) {
		ArrayList <Posicion> listaDePosiciones = new ArrayList <Posicion>();
		listaDePosiciones.add(posicionDeInicio);
		listaDePosiciones.add(posicionDeInicio.posicionEste());
		listaDePosiciones.add(posicionDeInicio.posicionEste().posicionEste());
		listaDePosiciones.add(posicionDeInicio.posicionEste().posicionEste().posicionEste());
		listaDePosiciones.add(posicionDeInicio.posicionEste().posicionEste().posicionEste().posicionEste());
		return listaDePosiciones;
	}
	
	private ArrayList<Posicion> crearHaciaIzquierda(Posicion posicionDeInicio) {
		ArrayList <Posicion> listaDePosiciones = new ArrayList<Posicion>();
		listaDePosiciones.add(posicionDeInicio);
		listaDePosiciones.add(posicionDeInicio.posicionOeste());
		listaDePosiciones.add(posicionDeInicio.posicionOeste().posicionOeste());
		listaDePosiciones.add(posicionDeInicio.posicionOeste().posicionOeste().posicionOeste());
		listaDePosiciones.add(posicionDeInicio.posicionOeste().posicionOeste().posicionOeste().posicionOeste());
		return listaDePosiciones;
	}
}
